package com.jiang.daily.Q1683;

/**
 * @author Jiang
 * @version 1.0
 * @date 2025/04/05 18:26
 */
class Solution {
    int res = 0;

    // 递归
    public int subsetXORSum(int[] nums) {
        recursion(nums, 0, 0);
        return res;
    }

    private void recursion(int[] nums, int i, int t) {
        if (i == nums.length) {
            res += t;
            return;
        }
        recursion(nums, i + 1, t);
        recursion(nums, i + 1, t ^ nums[i]);
    }


    // 枚举
    // public int subsetXORSum(int[] nums) {
    //     int res = 0;
    //     int n = nums.length;
    //     for (int i = 0; i < (1 << n); ++i) { // 遍历所有子集
    //         int tmp = 0;
    //         for (int j = 0; j < n; ++j) { // 遍历每个元素
    //             if ((i & (1 << j)) != 0) {
    //                 tmp ^= nums[j];
    //             }
    //         }
    //         res += tmp;
    //     }
    //     return res;
    // }
}
